iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 18
0
Modern Web

我每天都接一個API系列 第 18

[30apis] Day 17 : Human API

  • 分享至 

  • xImage
  •  

Human API 是一個讓使用者可以安全的跟開發者交換個人健康資訊的平台。

基本上,Human API 所在做的事情是把各式各樣的第三方健康資料來源整合在一起,這樣開發者就不需要在各種健康API 裡翻找自己想要的資料,煩惱於某個第三方 API 提供的資料不齊全,接太多個 API 重複資料又太累贅。
今天就來瞭解一下這個 API。

Human API 的教學還挺詳細的,也提供各種不同的工具 。除了拿到資料的 Data API,有幫助管理
APP 的 Application API、呈現圖表的 Chart API、協助 authentication 流程的 Human Connect 等。

Data Network 這邊,Human API 列出了所有他們整合的第三方健康 APP 的資訊,裡面有各種 APP 能夠提供的不同資料種類的比較、也有列出那些資料分別是來自哪些 API endpoint。

Developer Portal 這邊,Human API 提供了蠻詳細的教學。首先先分享一些註冊流程:

再來就是運用 Human Connect 來進行 Authentication 的步驟。
不幸的是我還沒研究怎麼使用 Node.js 跟弄個簡單的後端,所以沒有跟著教學走。

在進行完 authentication 的步驟之後,就到 API Reference 這邊來看看有哪些資料可以拿。
文件裡面把 Data API resource 分成兩種:

  • Medical API
  • Wellness API

這兩種 API 的運作方式是一模一樣的,主要的差異在於兩者的資料來源不同。Medical API 的資料來源主要是診所或是醫療服務的提供者,他們在經過使用者的同意之下(應該啦)同意 Human API 經手這些資料,得到的會是關於過敏、用藥歷史、保險方案、手術方案等比較專業的醫療相關資料。而 Wellness API 則是透過整合第三方健康 APP 、穿戴式科技或一些能連上網的醫療器材得到的。拿到的資料會是身體活動種類時間等、睡眠時間、身高體重、血壓、飲食記錄等。

最後有個 Utility API 則是提供一些整理這些資料來源跟不同來源的使用者的工具。

在實作之前,由於我並沒有任何使用者資料、也因為沒有後端,所以沒有辦法完成 authentication 的流程。為了實驗跟深入了解這個 API 服務,Human API 有提供一個 Demo Data。要使用這個 Demo Data,就是使 request URL 裡的 access_token=demo ,所以一個 request URL 是這樣的:

'GET',"https://api.humanapi.co/v1/human?access_token=demo"

(這邊使用的是 Wellness API 的 Human endpoint,會回傳關於特定使用者的概括總結。)
另外來必須設定一個 Authorization:Bearer demo 的 request header。

xhr.setRequestHeader("Authorization","Bearer demo")

現在使用以下 code 來試試看會得到什麼 response:

var url = "https://api.humanapi.co/v1/human?access_token=demo";
function makeRequest() {
  xhr = new XMLHttpRequest();

  xhr.onload = function() {
    var response = JSON.parse(this.responseText);
    console.log(response);
  };
  xhr.open("GET", url, true);
  xhr.setRequestHeader("Authorization", "Bearer demo");
  xhr.send();
}
makeRequest();

來做個簡單的 Profile 頁面呈現這些資料:

Codepen 連結


上一篇
[30apis] Day 16 : Last.fm API
下一篇
[30apis] Day 18 : Trello API
系列文
我每天都接一個API30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言